﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using WBGModel;
using System.Data;

namespace WBGDal
{
    public class DalEndereco : ICRUD
    {
        public List<ModelEndereco> Listar()
        {
            return Listar("");
        }

        public List<ModelEndereco> Listar(string filtro)
        {
            String cmd = "SELECT Endereco.* FROM Endereco" + (filtro.CompareTo("") == 0 ? "" : " WHERE " + filtro);
            return ConvertToList(UtilBanco.ExecComRetorno(cmd));
        }

        private List<ModelEndereco> ConvertToList(DataTable resultSet)
        {
            List<ModelEndereco> lst = new List<ModelEndereco>();
            for (int i = 0; i < resultSet.Rows.Count; i++)
            {
                DataRow dr = resultSet.Rows[i];
                ModelEndereco ender = new ModelEndereco();
                ender.idEndereco = Convert.ToInt32(dr["idEndereco"]);
                ender.idPessoa = Convert.ToInt32(dr["idPessoa"]);
                //ender.tipoLogradouro = Convert.ToInt16(dr["tipoLogradouro"]);
                ender.idBairro = Convert.ToInt32(dr["idBairro"]);
                ender.CEP = Convert.ToInt32(dr["CEP"]);
                ender.logradouro = dr["logradouro"].ToString();
                ender.numero = dr["numero"].ToString();
                ender.complemento = dr["complemento"].ToString();
                ender.ativo = Convert.ToBoolean(dr["ativo"]);
                lst.Add(ender);
            }
            return lst;
        }

        public void Inserir(ModelEndereco obj)
        {
            String cmd = String.Format("INSERT INTO Endereco (idPessoa,logradouro,numero,complemento,idBairro,CEP,ativo) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}')", obj.idPessoa, obj.logradouro, obj.numero, obj.complemento, obj.idBairro, obj.CEP, obj.ativo);
            UtilBanco.ExecSemRetorno(cmd);
        }

        public void Alterar(ModelEndereco obj)
        {
            string cmd = String.Format("UPDATE Endereco SET idPessoa='{0}', logradouro='{1}', numero='{2}', complemento='{3}', idBairro='{4}', CEP='{5}', ativo='{6}' WHERE idEndereco={7}", obj.idPessoa, obj.logradouro, obj.numero, obj.complemento, obj.idBairro, obj.CEP, obj.ativo, obj.idEndereco);
            UtilBanco.ExecSemRetorno(cmd);
        }

        public void Deletar(int id)
        {
            String cmd = String.Format("DELETE FROM Endereco WHERE idEndereco={0}", id);
            UtilBanco.ExecSemRetorno(cmd);
        }
    }
}
